package com.tedu.day02.oop;

/**
 * this关键字---super关键字---使用完全一致
 * this不需要继承【都可以】---当前类，指代当前
 * 使用方法：调用当前类的属性、方法、构造器
 *         this.属性           【当前类的属性赋值】
 *                              范围：出现在构造器方法中
 *                              区别当前类的属性与参数”名称“一致
 *        this.方法
 *        this()                多个有参构造器
 *
 * 笔试题：this跟super关键字区别？
 *       this调用本类的属性、方法、构造器
 *       super调用父类的属性、方法、构造器，存在继承关系，使用super
 *       this()与super()--传递参数：赋值
 *       this()调用本类的构造器--构造器首行
 *       super()调用父类的构造器--子类构造器的首行
 *       this（）和super（）可以同时出现在对象构造器中？  不能出现在同一构造器中
 */
public class this关键字 {
    int i;//属性---很少赋值【声明为赋值】---构造器或者方法中赋值
    int j;//属性---很少赋值【声明为赋值】---构造器或者方法中赋值

    public this关键字(int i, int j) {
        this.i = i;
        this.j = j;

    }

    //构造器：有参   需求：创建1个参数对象，给i跟j赋值【跟一样super】
    public this关键字(int i) {
        this(3,4);  //调用本类其他有参构造器==传参   i=3
         this.i = i;   //常见：  this.属性【当前类下属性】=参数  重新赋值i=1
                      //赋值 this.i=1;
    }
     //方法--this.方法
    public void  testI(){
        System.out.println("我是I");

    }
    public  void testJ(){//调取---输出：我是I、我是J
        this.testI();
        System.out.println("我是J");
    }

    public static void main(String[] args) {
       System.out.println(new this关键字(1).j);//属性没有输出语句
         new this关键字(1).testJ();//方法有输出语句
       // System.out.println(new this关键字(1,2).i);
    }
}
